#!/usr/bin/python
# vim:fileencoding=utf8
"""
Обеспечивает базовые опрерации с текстом
"""

__replacements = [("is't", "is not"),
                  ("don't", "do not"),
                  ("aren't", "are not"),
                  ("doesn't", "does not")]

def prepare_sentence(string):
    """
    Производит расшифровку сокращений.
    """
    for old, new in __replacements:
        string.replace(old, new)
    return string

def strip_punctuation(word):
    return word.strip('.').strip(',').strip('!').strip('?')

def text2words(text):
    """
    Разбивает текст на слова.
    "Ann, Jane and Kate are children." -->
    ['ann', 'jane', 'and', 'kate', 'are', 'children']
    """
    return [
            prepare_sentence(strip_punctuation(w).lower())
            for w in text.strip().split(' ')
            ]

def words2text(words):
    """
    Объединяет строковые слова в строку.
    Фишка в том, что правильно обрабатывает пустые слова,
    не наращивая за счёт них промежутки.    
    """
    return ' '.join((word for word in words if word != ''))
